package com.silence.gankio.util

import android.content.Context
import android.support.annotation.StringRes
import android.widget.Toast
import com.silence.gankio.R
import com.xuexiang.xui.utils.ResUtils
import com.xuexiang.xui.widget.dialog.strategy.impl.MaterialDialogStrategy
import es.dmoral.toasty.Toasty

object ToastUtil {

    fun showToast(context: Context?, @StringRes res: Int) {
        if (context == null) {
            return
        }
        showToast(context, ResUtils.getString(res))
    }

    fun showToast(context: Context?, message: CharSequence) {
        if (context == null) {
            return
        }
        showToast(context, message, ToastyType.SUCCESS)
    }

    fun showErrorData(context: Context?) {
        if (context == null) {
            return
        }
        showError(context, context.getString(R.string.data_exception))
    }


    fun showNetError(context: Context?) {
        if (context == null) {
            return
        }
        showError(context, context.getString(R.string.net_exception))
    }

    fun showError(context: Context?, errorMsg: String) {
        if (context == null) {
            return
        }
        showToast(context, errorMsg, ToastyType.ERROR)
    }


    fun showToast(context: Context?, message: CharSequence, type: ToastyType) {
        if (context == null) {
            return
        }
        try {
            when (type) {
                ToastUtil.ToastyType.INFO -> Toasty.info(context, message, Toast.LENGTH_SHORT).show()
                ToastUtil.ToastyType.ERROR -> Toasty.error(context, message, Toast.LENGTH_SHORT).show()
                ToastUtil.ToastyType.CUSTOM -> {
                }
                ToastUtil.ToastyType.NORMAL -> Toasty.info(context, message, Toast.LENGTH_SHORT).show()
                ToastUtil.ToastyType.SUCCESS -> Toasty.success(context, message, Toast.LENGTH_SHORT).show()
                ToastUtil.ToastyType.WARNING -> Toasty.warning(context, message, Toast.LENGTH_SHORT).show()
                else -> {
                }
            }
        } catch (e: Exception) {
            e.printStackTrace()
            MaterialDialogStrategy().showTipDialog(context, "提示错误", "请在系统中打开通知权限！", "确定")
        }

    }

    enum class ToastyType {
        SUCCESS,
        ERROR,
        INFO,
        WARNING,
        NORMAL,
        CUSTOM
    }

}